package com.qf.interceptor;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 拦截器
 * @author 千锋健哥
 */
public class MyInterceptor1 implements HandlerInterceptor {

    /**
     * 执行时机: 请求还没有到达controller的业务方法之前执行这个方法
     * 使用场景: 拦截所有请求做权限校验使用
     *
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("=====MyInterceptor1======preHandle======");
        //如果返回true, 请求放行
        //如果返回false, 请求被拦截住, 也就访问不到controller
        return true;
    }

    /**
     * 执行时机: 请求已经进入了controller方法, 并已经执行,
     *          方法执行完成后数据还没有传递到指定的jsp页面中
     * 使用场景: 可以加入整个项目中的全局数据,
     *          例如: 每个返回最后都要返回当天的天气数据.
     *
     */
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("=====MyInterceptor1======postHandle======");
    }

    /**
     * 执行时机: controller方法已经执行完毕, 数据也传递到了jsp页面中. 执行这个方法.
     * 使用场景: 收集执行日志信息
     *
     */
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
                                Exception ex) throws Exception {
        System.out.println("=====MyInterceptor1======afterCompletion======");

    }

}
